package Traductor.Sintactico;

import java.util.ArrayList;
import Traductor.Sintactico.Simbolo.TipoVar;


public class TablaSimbolos extends ArrayList<Simbolo>{
		
	private static final long serialVersionUID = 1L;

	public TablaSimbolos(){
		super();
	}

	public int estaID(String id){
		for(int cont=this.size()-1; cont>=0; cont--)
			if(this.get(cont).getId().equals(id))
				return cont;
		return -1;
	}
	
	public void addID(Simbolo simbol){
		this.add(simbol);
	}
	
	public Simbolo getSimbol(String id){
		int pos = estaID(id);
		if(pos==-1)
			return null;
		return this.get(pos);
	}
	
	public Simbolo getSimbol(){
		return this.get(this.size()-1);
	}
	
	public int getDir(String id){
		Simbolo smb = getSimbol(id);
		if(smb != null)
			return smb.getPropiedad().getDir();
		return -1;
	}
	
	public TipoVar getTipo(String id){
		Simbolo smb = getSimbol(id);
		if(smb != null)
			return smb.getPropiedad().getTipo();
		return null;
	}
	
	public void eliminaNivel(int n){
		System.out.print("\nNivel que voy a evaluar:"+ n +"\n");
		
			while (this.size()>0  && n < this.get(this.size()-1).getNivel()){
				System.out.print("\nElimino nivel:"+ this.get(this.size()-1).getNivel() +"\n");
				this.remove(this.size()-1);
				//System.out.print("\nNivel actualizado:"+this.get(this.size()-1).getNivel());
			}
		
	}
}